home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr26
/
netprog.zip
/
NETPROG.TAR
/
lib.s5
/
nspipe.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-12-17
|
1KB
|
53 lines
/*
* Create a named stream pipe.
*/
#include <sys/types.h>
#include <sys/stat.h>
int /* return 0 if OK, -1 on error */
ns_pipe(name, fd)
char *name; /* user-specified name to assign to the stream pipe */
int fd[2]; /* two file descriptors returned through here */
{
int omask;
struct stat statbuff;
/*
* First create an unnamed stream pipe.
*/
if (s_pipe(fd) < 0)
return(-1);
/*
* Now assign the name to one end (the first descriptor, fd[0]).
* To do this we first find its major/minor device numbers using
* fstat(2), then use these in a call to mknod(2) to create the
* filesystem entry. Beware that mknod(2) is restricted to root
* (for everything other than FIFOs).
* Under System VR3.2, the major value for the unnamed stream pipe
* corresponds to the major for "/dev/spx" and the minor value is
* whatever the "/dev/spx" clone driver assigned to make the
* major/minor unique.
*/
if (fstat(fd[0], &statbuff) < 0) {
close(fd[0]);
close(fd[1]);
return(-1);
}
unlink(name); /* in case it already exists */
omask = umask(0); /* assure mode is 0666 */
if (mknod(name, S_IFCHR | 0666, statbuff.st_rdev) < 0) {
close(fd[0]);
close(fd[1]);
umask(omask);
return(-1);
}
umask(omask); /* restore old umask value */
return(0); /* all OK */
}